快速搭建运行环境
1. 在 Linux 本地搭建测试环境
将数据存储在本地磁盘上,只需要一行命令启动 PostgreSQL 数据库即可在单机环境快速体验 LakeSoul 的功能。
1.1 启动一个 PostgreSQL 数据库
可以通过docker使用下面命令快速搭建一个pg数据库:
docker run -d --name lakesoul-test-pg -p5432:5432 -e POSTGRES_USER=lakesoul_test -e POSTGRES_PASSWORD=lakesoul_test -e POSTGRES_DB=lakesoul_test -d swr.cn-north-4.myhuaweicloud.com/dmetasoul-repo/postgres:14.5
1.2 PG 数据库初始化
在 LakeSoul 代码库目录下执行:
## 将初始化脚本copy到容器中
docker cp script/meta_init.sql lakesoul-test-pg:/
## 执行初始化命令
docker exec -i lakesoul-test-pg sh -c "PGPASSWORD=lakesoul_test psql -h localhost -p 5432 -U lakesoul_test -f meta_init.sql"
1.3 安装 Spark 环境
由于 Apache Spark 官方的下载安装包不包含 hadoop-cloud 以及 AWS S3 等依赖,我们提供了一个 Spark 安装包,其中包含了 hadoop cloud 、s3 等必要的依赖:https://dmetasoul-bucket.obs.cn-southwest-2.myhuaweicloud.com/releases/spark/spark-3.3.2-bin-hadoop3.tgz
wget https://dmetasoul-bucket.obs.cn-southwest-2.myhuaweicloud.com/releases/spark/spark-3.3.2-bin-hadoop3.tgz
tar xf spark-3.3.2-bin-hadoop3.tgz
export SPARK_HOME=${PWD}/spark-3.3.2-bin-hadoop3
如果是生产部署,推荐下载不打包 Hadoop 的 Spark 安装包:
https://dlcdn.apache.org/spark/spark-3.3.2/spark-3.3.2-bin-without-hadoop.tgz
并参考 https://spark.apache.org/docs/latest/hadoop-provided.html 这篇文档使用集群环境中的 Hadoop 依赖和配置。
LakeSoul 发布 jar 包可以从 GitHub Releases 页面下载:https://github.com/lakesoul-io/LakeSoul/releases 。下载后请将 Jar 包放到 Spark 安装目录下的 jars 目录中:
wget https://github.com/lakesoul-io/LakeSoul/releases/download/v3.0.0/lakesoul-spark-3.3-3.0.0.jar -P $SPARK_HOME/jars
如果访问 Github 有问题,也可以从如下链接下载:https://mirrors.huaweicloud.com/repository/maven/com/dmetasoul/lakesoul-spark/3.3-3.0.0/lakesoul-spark-3.3-3.0.0.jar
从 2.1.0 版本起,LakeSoul 自身的依赖已经通过 shade 方式打包到一个 jar 包中。之前的版本是多个 jar 包以 tar.gz 压缩包的形式发布。
1.3.1 启动 spark-shell 进行测试
首先为 LakeSoul 增加 PG 数据库配置
默认情况下,pg数据库连接到本地数据库,配置信息如下:
lakesoul.pg.driver=com.lakesoul.shaded.org.postgresql.Driver
lakesoul.pg.url=jdbc:postgresql://127.0.0.1:5432/lakesoul_test?stringtype=unspecified
lakesoul.pg.username=lakesoul_test
lakesoul.pg.password=lakesoul_test
自定义 PG 数据库配置信息,需要在程序启动前增加一个环境变量 lakesoul_home
,将配置文件信息引入进来。假如 PG 数据库配置信息文件路径名为:/opt/soft/pg.property,则在程序启动前需要添加这个环境变量:
export lakesoul_home=/opt/soft/pg.property
用户可以在这里自定义数据库配置信息,这样用户自定义 PG DB 的配置信息就会在 Spark 作业中生效。
1.3.2 进入 Spark 安装目录,启动 spark 交互式 shell:
./bin/spark-shell --conf spark.sql.extensions=com.dmetasoul.lakesoul.sql.LakeSoulSparkSessionExtension --conf spark.sql.catalog.lakesoul=org.apache.spark.sql.lakesoul.catalog.LakeSoulCatalog --conf spark.sql.defaultCatalog=lakesoul
1.3.3 将数据写入对象存储服务
需要添加对象存储 access key, secret key 和 endpoint 等信息
./bin/spark-shell --conf spark.sql.extensions=com.dmetasoul.lakesoul.sql.LakeSoulSparkSessionExtension --conf spark.sql.catalog.lakesoul=org.apache.spark.sql.lakesoul.catalog.LakeSoulCatalog --conf spark.sql.defaultCatalog=lakesoul --conf spark.hadoop.fs.s3a.access.key=XXXXXX --conf spark.hadoop.fs.s3a.secret.key=XXXXXX --conf spark.hadoop.fs.s3a.endpoint=XXXXXX --conf spark.hadoop.fs.s3.impl=org.apache.hadoop.fs.s3a.S3AFileSystem
如果是 Minio 等兼容 S3 的存储服务,还需要添加 --conf spark.hadoop.fs.s3a.path.style.access=true
。
Spark 作业 LakeSoul 相关参数设置
可以将以下配置添加到 spark-defaults.conf 或者 Spark Session Builder 部分。
Key | Value |
---|---|
spark.sql.extensions | com.dmetasoul.lakesoul.sql.LakeSoulSparkSessionExtension |
spark.sql.catalog.lakesoul | org.apache.spark.sql.lakesoul.catalog.LakeSoulCatalog |
spark.sql.defaultCatalog | lakesoul |
1.4 Flink 本地环境搭建
以当前发布最新版本为例,LakeSoul Flink jar 包下载地址为:https://github.com/lakesoul-io/LakeSoul/releases/download/v3.0.0/lakesoul-flink-1.20-3.0.0.jar
如果访问 Github 有问题,也可以从如下链接下载:https://mirrors.huaweicloud.com/repository/maven/com/dmetasoul/lakesoul-flink/1.20-3.0.0/lakesoul-flink-1.20-3.0.0.jar
最新版本支持 flink 集群为1.20 jar下载地址为:https://dlcdn.apache.org/flink/flink-1.20.1/flink-1.20.1-bin-scala_2.12.tgz
1.4.1 启动Flink SQL shell
在创建好 pg 数据库和 lakesoul_home
配置文件后,通过以下方式可以进入 SQL Client 客户端,将LakeSoul Flink jar放在 FLink 目录下,
进入 Flink 安装目录,执行以下命令:
# 启动 flink 集群
export lakesoul_home=/opt/soft/pg.property && ./bin/start-cluster.sh
# 启动 flink sql client
export lakesoul_home=/opt/soft/pg.property && ./bin/sql-client.sh embedded -j lakesoul-flink-1.20-3.0.0.jar
1.4.2 将数据写入对象存储服务
需要在配置文件 flink-conf.yaml 添加 access key, secret key 和 endpoint 等配置。
s3.access-key: XXXXXX
s3.secret-key: XXXXXX
s3.endpoint: XXXXXX